var querystring = require("querystring"),
    fs = require("fs"),
	mime = require("mime")
	url = require("url"),
	mustache = require("mustache");


var template = "{{title}} spends {{calc}}";

function start(request, response, postData) {
  console.log("Request handler 'start' was called.");

  var body = '<html>'+
    '<head>'+
    '<meta http-equiv="Content-Type" '+
    'content="text/html; charset=UTF-8" />'+
    '</head>'+
    '<body>'+
    '<form action="/upload" method="post">'+
    '<textarea name="text" rows="20" cols="60"></textarea>'+
    '<input type="submit" value="Submit text" />'+
    '</form>'+
    '</body>'+
    '</html>';

    response.writeHead(200, {"Content-Type": "text/html"});
    response.write(body);
    response.end();
}

function upload(request, response, postData) {
  console.log("Request handler 'upload' was called.");
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.write("You've sent the text: "+
  querystring.parse(postData).text);
  response.end();
}

function defaultServer(request, response, postData) {
  var fileName = url.parse(request.url).pathname;
  fileName = fileName.substring(1, fileName.length);
  fs.readFile(fileName, "binary", 
  function(error, file) {
    if(error) {
      response.writeHead(500, {"Content-Type": "text/plain"});
      response.write(error + "\n");
      response.end();
    } else {
      response.writeHead(200, {"Content-Type": mime.lookup(fileName)});
      response.write(file, "binary");
      response.end();
    }
  });
}

function Error_404(request, response, postData) {
    response.writeHead(404, {"Content-Type": "text/plain"});
    response.write("404 Not found");
    response.end();
}


exports.start = start;
exports.upload = upload;
exports.defaultServer = defaultServer;
